package com.bingo.generate.comm.util;

import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * ClassName 自定义的某种类型语言解析器
 * Description
 * Create by lc
 * Date 2021/7/20 18:32
 */
public class DslUtil {

    //  传入进来的第一列必须是
    public static String toJson(List<String> lines){
        //  依次循环后面的列    ，忽略掉注释
        List<String> list=lines.stream()
                .filter(item->!item.startsWith("##"))
                .filter(item->StringUtils.isNotBlank(item))
                .collect(Collectors.toList());
        //  取出第一列，作为列头
        if(list.size()<=1){
            return "[]";
        }
        String headStr=  list.get(0);
        String[] heads = headStr.replaceAll(" {2,}"," ").split(" ");
        List<Map> res=new ArrayList<>();
        for (int i = 1; i < list.size(); i++) {
            Map<String,Object> map=new HashMap<>();
            String str=list.get(i).replaceAll(" {2,}"," ");
            String[] contents=str.split(" ");
            if(contents.length!=heads.length){
                throw new RuntimeException("dsl解析报错,内容和列头数量不一致,报错内容:"+str);
            }
            for (int j = 0; j < heads.length; j++) {
                map.put(heads[j],contents[j]);
            }
            res.add(map);
        }
        //  取出后面的列，作为各列的数据
        return JSON.toJSONString(res);
    }



}
